iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0
自我挑戰組

Leetcode 各主題解題攻略系列 第 24

Binary Search 的應用 part1 (Introduction)

  • 分享至 

  • xImage
  •  

Hi 大家好,今天要來介紹Binary Search的各種應用的介紹。希望已經對binary search有基礎的瞭解了,再繼續看下去。

以下是binary search最常見的程式碼:

def binarySearch(arr, target):
    l, r = 0, len(arr) - 1

    while l <= r:
        mid = (l + r) // 2

        if target > arr[mid]:
            l = mid + 1
        elif target < arr[mid]:
            r = mid - 1
        else:
            return mid
    return -1

可以應用在已經排序好的array上,來找出array中和target吻合的值的index。若找不到則回傳-1。
以下是一些我所知的應用類型:

  1. 應用在array上,但是對於要回傳的index有不一樣的條件
  2. 應用在不同的資料結構上,例如:二維陣列、二元樹、多個一維陣列
  3. 保留上述binary search程式碼的框架,但是對於if statement的判斷由題目所定義,而非只是判斷數字大小

三種類型中,第一型的屬於比較直觀的。其餘兩種有時候很tricky。下一篇預計三種類型的都會分享題目。之後則是會分享進階和混合型。


上一篇
Union-Find 攻略 part2
下一篇
Binary Search 的應用 part2
系列文
Leetcode 各主題解題攻略30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言